Oracle WINDOWS RMAN 备份实施手册

好的,这是一份在 Windows Server 2012 R2 上执行 Oracle 11g 数据库备份的详细文档。我们将使用 Oracle 推荐的 RMAN (Recovery Manager) 工具进行备份,因为它功能强大、灵活且能确保数据一致性。


1 在 Windows Server 2012 R2 上使用 RMAN 备份 Oracle 11g 数据库

本指南将详细介绍如何在 Windows Server 2012 R2 操作系统上,使用 Oracle 11g 自带的 RMAN (Recovery Manager) 工具执行数据库备份。RMAN 是 Oracle 官方推荐的备份和恢复工具,能够执行全库备份、增量备份,并支持归档日志备份,确保数据的一致性和可恢复性。


1.1 前提条件与准备工作

在开始备份之前,请确保满足以下条件并完成相应的准备工作:


1.2 配置 RMAN (可选但推荐)

RMAN 允许您设置一些持久化的配置,这些配置会在每次 RMAN 会话中生效,除非被临时覆盖。这简化了备份命令。

  1. 打开 命令提示符 (CMD),以管理员身份运行。

  2. 连接到 RMAN:

    DOS

    rman target /
    
  3. 配置常用的备份选项:

    • 配置备份保留策略(冗余备份数量):保留最近的 3 份完全备份。

      代码段

      CONFIGURE RETENTION POLICY TO REDUNDANCY 3;
      
    • 配置备份压缩:推荐使用 BASIC 压缩,可以有效减小备份文件大小。

      代码段

      CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS ENCRYPTED ALGORITHM 'AES128';
      
    • 配置备份集优化:RMAN 会跳过备份那些已经备份过且未发生变化的相同文件。

      代码段

      CONFIGURE BACKUP OPTIMIZATION ON;
      
    • 配置控制文件自动备份:当数据库结构发生变化(如添加数据文件)时,RMAN 会自动备份控制文件。

      代码段

      CONFIGURE CONTROLFILE AUTOBACKUP ON;
      
    • 配置默认备份设备和并发通道(可选):如果您有多个 CPU 核心或想并行备份。

      代码段

      CONFIGURE DEFAULT DEVICE TYPE TO DISK;
      CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO BACKUPSET;
      
    • 配置归档日志删除策略:备份后删除已备份的归档日志,节省空间。

      代码段

      CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY BACKED UP 1 TIMES TO DISK;
      
  4. 查看当前的 RMAN 配置:

    代码段

    SHOW ALL;
    
  5. 退出 RMAN:

    代码段

    EXIT;
    

1.3 执行数据库备份

以下是一些常见的 RMAN 备份策略。

1.3.1 完整数据库备份 (Full Database Backup)

这是最基本的备份类型,它会备份所有数据文件、控制文件和服务器参数文件 (SPFILE)。

  1. 打开 命令提示符 (CMD),以管理员身份运行。

  2. 连接到 RMAN:

    DOS

    rman target /
    
  3. 执行完整数据库备份:

    代码段

    RUN {
      ALLOCATE CHANNEL d1 DEVICE TYPE DISK;
      BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT;
      -- 或者指定备份到特定目录:
      -- BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT FORMAT 'D:\OracleBackup\DBNAME\%U';
      RELEASE CHANNEL d1;
    }
    
    • ALLOCATE CHANNEL d1 DEVICE TYPE DISK;:分配一个名为 d1 的磁盘通道用于备份。

    • BACKUP DATABASE PLUS ARCHIVELOG:备份整个数据库(包括所有数据文件、控制文件和 SPFILE)以及所有尚未备份的归档日志。

    • DELETE INPUT:在归档日志备份完成后,自动删除已备份的归档日志。

    • FORMAT 'D:\OracleBackup\DBNAME\%U':可选,指定备份文件的输出路径和命名格式。%U 会生成一个唯一的备份文件名。如果未指定,RMAN 会使用其默认位置。

    • RELEASE CHANNEL d1;:释放通道。

  4. 备份完成后,退出 RMAN:

    代码段

    EXIT;
    

1.3.2 增量备份 (Incremental Backup)

增量备份只备份自上次相同或更低级别的备份以来发生变化的数据块。这能有效节省备份时间和存储空间。

1.3.3 仅归档日志备份

如果您需要频繁备份归档日志以满足恢复点目标 (RPO),可以单独备份归档日志。

代码段

RUN {
  ALLOCATE CHANNEL d1 DEVICE TYPE DISK;
  BACKUP ARCHIVELOG ALL DELETE INPUT;
  RELEASE CHANNEL d1;
}

1.4 编写批处理脚本自动执行备份

为了自动化备份过程,您可以创建一个 .bat 批处理脚本,并结合 Windows 任务计划程序进行定时执行。

  1. 在您选择的备份目录(例如 D:\OracleBackup)下创建一个新的文本文件,命名为 backup_full_db.bat

  2. 编辑该文件,并粘贴以下内容:

    代码段

    @ECHO OFF
    REM 设置 Oracle 环境变量 (根据您的实际安装路径修改)
    SET ORACLE_HOME=C:\app\oracle\product\11.2.0\dbhome_1
    SET ORACLE_SID=ORCL      REM 替换为您的数据库 SID
    SET PATH=%ORACLE_HOME%\bin;%PATH%
    
    SET BACKUP_DIR=D:\OracleBackup\%ORACLE_SID%\FullBackup
    IF NOT EXIST %BACKUP_DIR% MKDIR %BACKUP_DIR%
    
    ECHO %DATE% %TIME% - Starting RMAN Full Database Backup for %ORACLE_SID%... > %BACKUP_DIR%\backup_log_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%_%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%.log 2>&1
    
    rman target / log %BACKUP_DIR%\backup_log_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%_%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%.log << EOF
    RUN {
      ALLOCATE CHANNEL d1 DEVICE TYPE DISK;
      BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT FORMAT '%BACKUP_DIR%\%U';
      RELEASE CHANNEL d1;
      CROSSCHECK BACKUP;  # 检查备份集状态
      DELETE EXPIRED BACKUP; # 删除标记为过期的备份
    }
    EXIT;
    EOF
    
    IF %ERRORLEVEL% NEQ 0 (
        ECHO %DATE% %TIME% - RMAN backup failed! Check log file for details.
    ) ELSE (
        ECHO %DATE% %TIME% - RMAN backup completed successfully.
    )
    
    ECHO %DATE% %TIME% - RMAN backup script finished. >> %BACKUP_DIR%\backup_log_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%_%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%.log 2>&1
    
  3. 根据您的实际情况修改以下变量

    • SET ORACLE_HOME=C:\app\oracle\product\11.2.0\dbhome_1:Oracle 数据库的安装路径。

    • SET ORACLE_SID=ORCL:您的 Oracle 数据库实例的系统标识符 (SID)。

    • SET BACKUP_DIR=D:\OracleBackup\%ORACLE_SID%\FullBackup:备份文件的目标目录。

  4. 保存文件。


1.5 使用 Windows 任务计划程序自动化备份

  1. 打开 服务器管理器,点击 工具 -> 任务计划程序

  2. 在任务计划程序库中,右键点击 创建基本任务...

  3. 创建基本任务向导

    • 名称:输入一个有意义的名称,例如 Oracle_11g_Full_Backup

    • 描述:简要描述任务,例如 每日 Oracle 11g 数据库全库备份

    • 触发器:选择任务的执行频率,例如 每天每周

    • 每日/每周:设置具体的执行时间和日期。例如,每天凌晨 2:00。

    • 操作:选择 启动程序

    • 程序/脚本:点击 浏览,选择您刚刚创建的 .bat 备份脚本文件(例如 D:\OracleBackup\backup_full_db.bat)。

    • 添加参数(可选):留空。

    • 起始于(可选):输入您的备份脚本所在的目录(例如 D:\OracleBackup)。

  4. 点击 完成

  5. 重要:修改任务权限

    • 在任务计划程序库中,找到您创建的任务 (Oracle_11g_Full_Backup)。

    • 双击该任务或右键点击选择 属性

    • 常规 选项卡下,点击 更改用户或组...

    • 输入拥有 ORA_DBA 权限的 Windows 用户名(例如 Administrator 或专门的 Oracle 服务账户),并点击 检查名称,然后 确定

    • 勾选 无论用户是否登录都要运行

    • 勾选 使用最高权限运行

    • 切换到 设置 选项卡,确保 如果任务运行时间超过以下时间,请停止它 设置为合理的值(例如 4 小时),以防止脚本无限期运行。

    • 点击 确定,系统可能会要求您输入所选用户的密码。


1.6 验证备份

每次备份完成后,您应该检查备份日志文件以及备份目录,以确认备份是否成功。

  1. 检查日志文件:打开 D:\OracleBackup\ORCL\FullBackup 目录下生成的日志文件(文件名包含日期和时间戳),查看是否有错误信息。RMAN 成功完成会显示 Recovery Manager complete.

  2. 检查备份文件:确认在备份目录下生成了新的备份文件。备份文件通常以 xxxx_DBS_...xxxx_ARC_... 格式命名,或者如果您在 RMAN 命令中指定了格式,则按您指定的格式命名。


1.7 故障排除提示


希望这份文档能帮助您在 Windows Server 2012 R2 上成功实施 Oracle 11g 数据库备份。定期测试您的备份和恢复过程是确保数据安全的关键!